load("@rules_cc//cc:defs.bzl", "cc_library")

package(default_visibility = ["//visibility:public"])

cc_library(
    name = "boost.graph",
    hdrs = glob(
        [
            "include/**/*.hpp",
            "include/**/*.h",
        ],
        exclude = [
            "include/boost/graph/bandwidth.hpp",
            "include/boost/graph/chrobak_payne_drawing.hpp",
            "include/boost/graph/circle_layout.hpp",
            "include/boost/graph/detail/**/*.hpp",
            "include/boost/graph/dimacs.hpp",
            "include/boost/graph/edge_connectivity.hpp",
            "include/boost/graph/exception.hpp",
            "include/boost/graph/exterior_property.hpp",
            "include/boost/graph/find_flow_cost.hpp",
            "include/boost/graph/graph_mutability_traits.hpp",
            "include/boost/graph/graph_stats.hpp",
            "include/boost/graph/howard_cycle_ratio.hpp",
            "include/boost/graph/labeled_graph.hpp",
            "include/boost/graph/leda_graph.hpp",
            "include/boost/graph/metis.hpp",
            "include/boost/graph/planar_canonical_ordering.hpp",
            "include/boost/graph/planar_detail/add_edge_visitors.hpp",
            "include/boost/graph/point_traits.hpp",
            "include/boost/graph/profile.hpp",
            "include/boost/graph/property_maps/container_property_map.hpp",
            "include/boost/graph/property_maps/matrix_property_map.hpp",
            "include/boost/graph/small_world_generator.hpp",
            "include/boost/graph/ssca_graph_generator.hpp",
            "include/boost/graph/stanford_graph.hpp",
            "include/boost/graph/wavefront.hpp",
            "include/boost/graph/write_dimacs.hpp",
            "include/boost/pending/fibonacci_heap.hpp",
            "include/boost/pending/mutable_heap.hpp",
        ],
    ),
    features = [
        "parse_headers",
    ],
    includes = ["include"],
    textual_hdrs = glob([
        "include/boost/graph/bandwidth.hpp",
        "include/boost/graph/chrobak_payne_drawing.hpp",
        "include/boost/graph/circle_layout.hpp",
        "include/boost/graph/detail/**/*.hpp",
        "include/boost/graph/dimacs.hpp",
        "include/boost/graph/edge_connectivity.hpp",
        "include/boost/graph/exception.hpp",
        "include/boost/graph/exterior_property.hpp",
        "include/boost/graph/find_flow_cost.hpp",
        "include/boost/graph/graph_mutability_traits.hpp",
        "include/boost/graph/graph_stats.hpp",
        "include/boost/graph/howard_cycle_ratio.hpp",
        "include/boost/graph/labeled_graph.hpp",
        "include/boost/graph/leda_graph.hpp",
        "include/boost/graph/metis.hpp",
        "include/boost/graph/planar_canonical_ordering.hpp",
        "include/boost/graph/planar_detail/add_edge_visitors.hpp",
        "include/boost/graph/point_traits.hpp",
        "include/boost/graph/profile.hpp",
        "include/boost/graph/property_maps/container_property_map.hpp",
        "include/boost/graph/property_maps/matrix_property_map.hpp",
        "include/boost/graph/small_world_generator.hpp",
        "include/boost/graph/ssca_graph_generator.hpp",
        "include/boost/graph/stanford_graph.hpp",
        "include/boost/graph/wavefront.hpp",
        "include/boost/graph/write_dimacs.hpp",
        "include/boost/pending/fibonacci_heap.hpp",
        "include/boost/pending/mutable_heap.hpp",
    ]),
    deps = [
        "@boost.algorithm",
        "@boost.any",
        "@boost.array",
        "@boost.assert",
        "@boost.bimap",
        "@boost.bind",
        "@boost.concept_check",
        "@boost.config",
        "@boost.container_hash",
        "@boost.conversion",
        "@boost.core",
        "@boost.detail",
        "@boost.foreach",
        "@boost.function",
        "@boost.integer",
        "@boost.iterator",
        "@boost.lexical_cast",
        "@boost.math",
        "@boost.move",
        "@boost.mpl",
        "@boost.multi_index",
        "@boost.optional",
        "@boost.parameter",
        "@boost.preprocessor",
        "@boost.property_map",
        "@boost.property_tree",
        "@boost.random",
        "@boost.range",
        "@boost.regex",
        "@boost.serialization",
        "@boost.smart_ptr",
        "@boost.spirit",
        "@boost.static_assert",
        "@boost.throw_exception",
        "@boost.tti",
        "@boost.tuple",
        "@boost.type_traits",
        "@boost.typeof",
        "@boost.unordered",
        "@boost.utility",
        "@boost.xpressive",
    ],
)
